//
//  CXHAdSDKSplashAd.h
//  CXHAdSDK-Core
//
//  Created by 陈坤 on 2022/9/25.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@protocol CXHAdSDKSplashAdDelegate;

@interface CXHAdSDKSplashAd : NSObject

/**
 广告生命周期代理
*/
@property (nonatomic, weak) id<CXHAdSDKSplashAdDelegate> delegate;

/**
 广告位id
*/
@property (nonatomic, copy) NSString *posId;

/**
 *  广告是否有效，以下情况会返回NO，建议在展示广告之前判断，否则会影响计费或展示失败
 *  a.广告未拉取成功
 *  b.广告已经曝光过
 *  c.广告过期
 *
 */
@property (nonatomic, readonly) BOOL isAdValid;

/**
 自定义处理广告落地页，当渠道为bwt时有效，点击回调中会带有广告落地页地址
*/
@property (nonatomic, assign) BOOL customLoadingPage;

/**
 展示时间，对渠道广点通无效，默认为5s
 */
@property (nonatomic, assign) NSInteger showTime;

/**
 设置广告跳过按钮位置，默认为右下角，只针对channel和zhike渠道
 */
@property (nonatomic, assign) BOOL setSkipButtonToRightTop;


/// 开屏广告的背景图片, 可以设置背景图片作为开屏加载时的默认背景
@property (nonatomic, strong) UIImage *backgroundImage;

/**
 开屏广告底部视图
 */
@property (nonatomic, strong) UIView *bottomView;

/**
 viewControllerForPresentingModalView
 详解：[必选]开发者需传入用来弹出目标页的ViewController，一般为当前ViewController
 */
@property (nonatomic, weak) UIViewController *controller;

/**
 广告发起请求并展示在Window中
 */
- (void)loadAndShowSplashAdInWindow:(UIWindow *)window DEPRECATED_MSG_ATTRIBUTE("接口已经废弃，请使用loadSplashAd和showSplashAdInWindow:接口");

/**
 请求开屏广告，只拉取不展示
 */
- (void)loadSplashAd;

/**
 展示开屏广告
 */
- (void)showSplashAdInWindow:(UIWindow *)window;

/**
 携带底部视图，展示开屏广告
 */
- (void)showSplashInWindow:(UIWindow *)window bottomView:(UIView *)bottomView DEPRECATED_MSG_ATTRIBUTE("接口已经废弃，请使用showSplashAdInWindow:接口，并提前设置底部视图");

/**
 设置开屏场景id
 */
- (void)setSplashAdScenes:(NSDictionary *)scenes;

/**
 获取广告的竞价价格，单位分，为0则表示未成功获取到广告，或者不支持竞价，开启该功能需要联系媒介商务
 */
- (NSInteger)getBidPrice;
/**
 发送竞价成功上报
 @param price 赢价价格，单位分
 */
- (void)sendWinNotice:(NSInteger)price;

/**
 发送竞价失败上报
 @param price 赢价价格，单位分
 */
- (void)sendLossNotice:(NSInteger)price;

@end


@protocol CXHAdSDKSplashAdDelegate <NSObject>

@optional

/**
 开屏广告点击回调, 可能会打开 AppStore, WebView, ThirdApp etc.

 @param splashAd 开屏广告
 @param loadingPageURL 广告落地页地址，当渠道为bwt，并且customLoadingPage为YES时有值
 */
- (void)CXH_splashAdDidClick:(CXHAdSDKSplashAd *)splashAd loadingPageURL:(NSString *)loadingPageURL;

/**
 开屏广告关闭回调, 触发条件: 点击广告, 点击跳过, 超时关闭

 @param splashAd 开屏对象
 */
- (void)CXH_splashAdDidClose:(CXHAdSDKSplashAd *)splashAd;

/**
 开屏广告展示回调

 @param splashAd 开屏对象
 */
- (void)CXH_splashAdExposured:(CXHAdSDKSplashAd *)splashAd;

/**
 开屏广告加载成功
 
 @param splashAd 开屏对象
 */
- (void)CXH_splashAdDidLoad:(CXHAdSDKSplashAd *)splashAd;

/**
 开屏广告加载失败
 
 @param splashAd 开屏对象
 */
- (void)CXH_splashAdDidFailToLoad:(CXHAdSDKSplashAd *)splashAd error:(NSError *)error;

/**
 *  开屏广告成功展示
 *
 *  @param splashAd 开屏对象
 */
- (void)CXH_splashAdSuccessPresentScreen:(CXHAdSDKSplashAd *)splashAd;

/**
 *  开屏广告展示失败
 *
 *  @param splashAd 开屏对象
 */
- (void)CXH_splashAdFailToPresent:(CXHAdSDKSplashAd *)splashAd withError:(NSError *)error;

/**
 *  开屏广告关闭落地页
 *
 *  @param splashAd 开屏对象
 */
- (void)CXH_splashAdCloseLandingPage:(CXHAdSDKSplashAd *)splashAd;

@end


NS_ASSUME_NONNULL_END
